home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / RequestAm.zprx < prev    next >
Text File  |  1995-06-23  |  6KB  |  294 lines

  1. /*
  2.    $VER: RequestAm.zprx 1.0 (18.6.95) Copyright (c) Frank Dietrich.
  3.    Ein ARexx-Skript für "Zodiac's Point" (basierend auf dem Skripten
  4.    'RequestFC.zprx 1.0' von Ralph Seichter, AminetReq.zprx von Jan
  5.    Ritzerfeld und von RequestAm.mdmrexx von Erik Kraemer).
  6.  
  7.    Das Skript benötigt Jürgen Kohrmeyer's "rexxtricks.library" (V38.1
  8.    oder besser) und Ralph Seichter's "Zodiac's Point" (V37.158 oder
  9.    besser; ältere ZP-Versionen sind dafür leider nicht geeignet).
  10.  
  11.  
  12.    FUNKTIONSBESCHREIBUNG:
  13.  
  14.    Dieses Script durchsucht ein 'Aminet-Readme' Verzeichnis oder 'INHALT'
  15.    Nachricht von 'MAPS' der Boxsoftware 'Ambos' nach requestbaren Dateien.
  16.    Alle gefundenen Dateien werden alphabetisch sortiert in einem Fenster auf
  17.    dem Screen von 'ZPoint' dargestellt. Hier können Sie die gewünschten
  18.    Dateien auswählen und requesten, Multiselect ist dabei möglich. Die
  19.    Dateien werden per 'REQUEST' von 'MAPS' angefordert.
  20.  
  21.  
  22.    INSTALLATION:
  23.  
  24.    Kopieren sie dieses Skript ins Rexx-Verzeichnis von ZP. Sie können
  25.    es dann an das Gadget [Bestellen] binden, indem Sie in der Datei
  26.    "maps/request.zp" den Text
  27.  
  28.       .key FILE/A,SCREEN/A
  29.       .bra {
  30.       .ket }
  31.       Delete >NIL: {FILE} QUIET
  32.       Run >NIL: SYS:Rexxc/RX ZPoint:Rexx/RequestAm.zprx {SCREEN}
  33.  
  34.    eintragen (bitte passen Sie ggf. den Pfad für 'RX' an).
  35.  
  36.  
  37.    AUTOR DIESES SKRIPTS:
  38.  
  39.       Frank Dietrich
  40.       Bliesstr. 35         EMail: f.dietrich@groenld.sb.sub.de
  41.       66538 Neunkirchen
  42.  
  43.  
  44.    ANPASSEN DES SKRIPTS:
  45.  
  46.    Am Anfang des Skripts können einige Parmeter eingestellt werden:
  47.  
  48.    mapsadr         - Adresse des MAPS-Dienstes
  49.  
  50.    filelaenge      - Stellt ein, ob die Filelängen im Fenster angezeigt
  51.                      werden sollen. 0 = aus, 1 = ein
  52.  
  53.    brettname       - Stellt ein, ob die Brettnamen im Fenster angezeigt
  54.                      werden sollen. 0 = aus, 1 = ein
  55.  
  56.    fensterbreite   = Stellt die Breite des Listview-Fensters ein
  57.  
  58.    Pfad            = wo das Verzeichnis Aminet/Readmes liegt
  59. */
  60.  
  61.  
  62. mapsadr         = 'MAPS'   /* oder 'maps@<server>.<domain>' */
  63. filelaenge      = 1
  64. brettname       = 1
  65. fensterbreite   = 704
  66. Pfad            = '/<BINAER-AMIGA>'  /* kein Unterverzeichnis '' */
  67.  
  68.  
  69. /********************************************************************/
  70. /*** !!! BITTE AENDERN SIE UNTERHALB DIESER ZEILE NICHTS MEHR !!! ***/
  71. /********************************************************************/
  72.  
  73.  
  74. PARSE ARG zp
  75. zp = COMPRESS(zp)
  76. IF (zp = '') THEN
  77.    zp = 'ZPoint'
  78.  
  79. OPTIONS RESULTS
  80. ADDRESS VALUE zp
  81.  
  82. IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
  83.    IF (~ADDLIB('rexxtricks.library', 0, -30, 38)) THEN DO
  84.       requestnotify 'Kann rexxtricks.library nicht öffnen!'
  85.       EXIT
  86.    END
  87.  
  88. IF (~SHOW('LIBRARIES','rexxsupport.library')) THEN
  89.    IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
  90.       requestnotify 'Kann rexxsupport.library nicht öffnen!'
  91.       EXIT
  92.    END
  93.  
  94.  
  95. /* Absender und Betreff auslesen */
  96.  
  97. messageinfo author
  98. absender = RESULT
  99. messageinfo fullsubject
  100. betreff = RESULT
  101.  
  102.  
  103. /* Prüfen, ob es eine 'INHALT' Nachricht von MAPS ist oder */
  104. /* ein Aminet-Readme Datei ist */
  105.  
  106.  
  107. if (~MATCHPATTERN(absender,'MAPS@#?') & ~MATCHPATTERN(betreff,'INHALT')) THEN DO
  108.    if (~MATCHPATTERN(absender,'aminet@#?')) THEN DO
  109.       requestnotify 'Keine MAPS oder Aminet Nachricht!'
  110.       EXIT
  111.    END
  112. END
  113.  
  114.  
  115. /* Nachrichtenrumpf auslagern und Datei zum Lesen öffnen */
  116.  
  117. inname  = 'T:1-RequestAm.tmp'
  118. outname = 'T:2-RequestAm.tmp'
  119. savemessagebody inname
  120. IF (~RC) THEN DO
  121.    requestnotify 'Kann Nachricht nicht speichern!'
  122.    EXIT
  123. END
  124.  
  125. IF (~READFILE(inname,'zeile')) THEN DO
  126.    requestnotify 'Kann ' || inname || ' nicht lesen!'
  127.    EXIT
  128. END
  129.  
  130.  
  131. /* Je nach Nachricht das richtige Unterprogramm aufrufen */
  132.  
  133. if (MATCHPATTERN(betreff,'INHALT')) THEN
  134.    CALL inhalt
  135. ELSE
  136.    CALL aminet
  137.  
  138.  
  139. /* Auslagerungsdatei schließen und löschen */ 
  140.  
  141. dummy = DELETE(inname)
  142.  
  143.  
  144. /* ListView-Fenster Definition */
  145.  
  146. windef.pubscreen = zp
  147. windef.title     = 'Zu requestende Dateien auswählen'
  148. windef.gadgettext = '_Requesten|_Abbrechen'
  149. windef.sort      = 'TRUE'
  150. windef.font      = 'DEFAULT'
  151. windef.width     = fensterbreite
  152.  
  153.  
  154. /* ListView-Fenster öffnen */
  155.  
  156. IF (VIEWLIST('string', 'windef', 'destvar')) THEN DO
  157.    IF (~OPEN('temp2', outname, 'WRITE')) THEN DO
  158.       BEEP()
  159.       EXIT
  160.    END
  161.    sendmail = 0
  162.    DO i = 1 TO destvar.0
  163.       x = LSEARCH(destvar.i, 'string')
  164.       IF (x ~= (-1)) THEN DO
  165.          dummy = WRITELN('temp2', request.x)
  166.          sendmail = 1
  167.       END
  168.    END
  169.    dummy = CLOSE('temp2')
  170.    IF (sendmail) THEN DO
  171.       writemessage 'FILE ' || outname || ' RECEIVER ' || mapsadr || ' SUBJECT REQUEST'
  172.       IF (RESULT = '') THEN DO
  173.          requestnotify 'Kann Bestellung nicht verschicken!'
  174.          EXIT
  175.       END
  176.       ELSE
  177.          requestnotify 'Bestellung verschickt.'
  178.    END
  179.    ELSE
  180.       dummy = DELETE(outname)
  181. END
  182.  
  183.  
  184. /* Skript beenden */
  185.  
  186. EXIT(0)
  187.  
  188.  
  189. /* 'INHALT' von 'MAPS' nach requestbaren Files durchsuchen */
  190.  
  191. inhalt:
  192.  
  193. nummer = 1
  194.  
  195.  
  196.   DO i = 1 TO zeile.0
  197.  
  198.     IF LEFT(zeile.i,11) = '** INHALT :' THEN DO
  199.       aktuellbrett = SUBSTR(zeile.i,13)
  200.     END
  201.  
  202.     IF DATATYPE(WORD(zeile.i,1)) = 'NUM' THEN DO
  203.       string.nummer  = SUBSTR(zeile.i,5,20)
  204.       request.nummer = aktuellbrett string.nummer
  205.  
  206.  
  207. /* Filelaenge kommt dazu */
  208.  
  209.       string.nummer = string.nummer RIGHT(WORD(zeile.i,5),4)
  210.  
  211.  
  212. /* Datum kommt dazu */
  213.  
  214.       string.nummer = string.nummer RIGHT(WORD(zeile.i,3),5)
  215.  
  216.  
  217. /* Beschreibung kommt dazu */
  218.  
  219.       string.nummer = string.nummer SUBWORD(zeile.i,6)
  220.  
  221.       nummer = nummer+1
  222.     END
  223.   END
  224.   string.0 = nummer-1
  225.  
  226.  
  227. RETURN
  228.  
  229. aminet:
  230.  
  231. JUMPTOMESSAGE 1
  232.  
  233. COUNT ALL
  234.  
  235. zeilen = RESULT
  236.  
  237. DO i=1 to zeilen
  238.  
  239.   MESSAGEINFO RECEIVER
  240.   empfaenger = result
  241.  
  242.   MESSAGEINFO SUBJECT
  243.   betreff = result
  244.  
  245.   CALL auslagern
  246.  
  247.   string.i = delstr(betreff,length(betreff)-6)
  248.  
  249.   request.i = Pfad||empfaenger string.i'.lha'
  250.  
  251.   string.i = LEFT(string.i,20)
  252.  
  253. /* Beschreibung kommt dazu */
  254.  
  255.   beschreibung = STRIP(SUBSTR(zeile.1,8),'L')
  256.   string.i = string.i LEFT(beschreibung,50)
  257.  
  258.   DOWN 1
  259.  
  260. END
  261.  
  262. string.0 = zeilen
  263.  
  264. RETURN
  265.  
  266.  
  267.  
  268. /* Nachricht auslagern, einlesen und wieder loeschen */
  269.  
  270. auslagern:
  271.  
  272. /* Auslagern */
  273.  
  274. savemessagebody 'T:Request-Rexx.temp'
  275.  
  276. IF (~RC) THEN DO
  277.    requestnotify 'Kann Nachricht nicht speichern!'
  278.    EXIT
  279. END
  280.  
  281. /* Einlesen */
  282.  
  283. IF ~READFILE('T:Request-Rexx.temp','zeile') THEN
  284.   EXIT(10)
  285.  
  286.  
  287. /* Loeschen */
  288.  
  289. dummy = DELETE('T:Request-Rexx.temp')
  290.  
  291. RETURN
  292.  
  293. /* EOF */
  294.